package cn.iocoder.yudao.module.of.controller.admin.schedulecenter.vo;

import cn.hutool.core.date.DateTime;
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileCreateReqVO;
import cn.iocoder.yudao.module.infra.controller.admin.file.vo.file.FileUploadReqVO;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 日程中心 信息新增/修改 Request VO")
@Data
public class ScheduleCenterSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5266")
    private Long id;

    @Schema(description = "标题")
    private String title;

    @TableField(typeHandler = JacksonTypeHandler.class)
    @Schema(description = "参与人员")
    private Set<String> participants;

    @Schema(description = "开发时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private DateTime startTime;

    @Schema(description = "结束时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private DateTime endTime;

    @Schema(description = "会议地点")
    private String location;

    @Schema(description = "日程类型 1:日程  2：任务 3：会议")
    private Integer category;

    @Schema(description = "图标")
    private String icon;

    @Schema(description = "描述", example = "随便")
    private String description;

    @Schema(description = "提醒人员")
    private Integer reminder;

    @Schema(description = "提醒类型（弹窗、企业微信等）", example = "1")
    private String type;

    @Schema(description = "提醒时间( 提前15分钟、提前30分钟）")
    private Integer remindTimeType;

    @Schema(description = "提醒时间点2025-04-12 12:30:00")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private DateTime remindTime;

    @Schema(description = "重复周期")
    private Integer repeatPeriod;

    @Schema(description = "附件地址")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Set<Long>  attachments;

//    @Schema(description = "标签")
//    @TableField(typeHandler = JacksonTypeHandler.class)
//    private Set<String>  tags;

    @Schema(description = "状态", example = "2")
    private Boolean status;
    @Schema(description = "优先级", example = "1")
    private Integer priorityId;
    @Schema(description = "优先级名称", example = "优先级高")
    private String priorityName;

}